extends Node2D

var lifetime = 0.8  # 爆炸效果持续时间（秒）
var time_alive = 0.0
var max_scale = 1.0  # 最大缩放比例
var is_critical = false

func _ready():
	# 设置初始缩放
	scale = Vector2(0.1, 0.1)
	
	# 如果是暴击，调整颜色和大小
	if is_critical:
		$Sprite2D.modulate = Color(1.5, 1.0, 0.5)  # 暴击时颜色更亮
		max_scale = 1.5  # 暴击时爆炸更大

func _process(delta):
	# 更新生命周期
	time_alive += delta
	
	# 计算当前缩放比例（先增大后减小）
	var progress = time_alive / lifetime
	var current_scale_factor = 0.0
	
	if progress < 0.3:
		# 前30%时间快速增大
		current_scale_factor = progress / 0.3
	else:
		# 后70%时间缓慢减小
		current_scale_factor = 1.0 - ((progress - 0.3) / 0.7)
	
	# 应用缩放
	scale = Vector2(current_scale_factor, current_scale_factor) * max_scale
	
	# 更新透明度（逐渐消失）
	var alpha = 1.0 - (time_alive / lifetime)
	$Sprite2D.modulate.a = alpha
	
	# 到达最大存活时间后消失
	if time_alive >= lifetime:
		queue_free()
